const amqp = require('amqplib')
const config = require('../config/dev')

// 生产消息的接口
/**
 *
 * @param exchange 交换机名称，不传为默认的
 * @param queue 队列名 必传参数
 * @param callback 回调
 * @returns {Promise<void>}
 */
async function publish(exchange, queue, callback) {
    if (!queue) {
        callback('queue must args not exist!', null);
    }

    const conn = await amqp.connect(config); // 通过配置文件mq的url创建一个链接
    const channel = await conn.createChannel(); // 创建一个channel（频道）
    await channel.assertQueue(queue, {durable: true, exclusive: false}); // 创建队列，只有没有情况才会创建
    await channel.publish(exchange ? exchange : '', queue, Buffer.from('hello world!')); // 发布消息
    await channel.close(); // 关闭channel（频道）
    await conn.close(); // 关闭conn（链接）
    callback(null, 'success');
}

// 测试发布一条消息
function test(){
    publish('', 'mini', (err, res) => {
        if (err) {
            console.log(err);
            throw new Error(err);
        }
        console.log(res);
    });
}

// test();

